Goldeneye Position Extractor - Version 2.0 (Console)
c/o Zoinkity (nefariousdogooder@yahoo.com)

  Feel free to email, and if it doesn't wind up in the spam folder I'll get back to ya'.

  This is just a tiny little app that sucks player positions out of Goldeneye from console.  It should pull the positions off any region game, but obviously I can only check NTSC.  (If you have problems with other regions, email or post somewhere I might see it)  Its designed specificly to grab stuff so it isn't so bloody annoying making level setups.  Specificly, it cuts the time out of doing the floating point conversions.
  Its slightly more useful than the debug position option because:
1	it works on PAL (probably)
2	it displays room pointers/Pvalues
3	it displays both the expanded and unexpanded presets (see note)
4	it outputs all active players, and doesn't chop off the display on the right in multi ;*)
5	you'll get the addresses of player data and position.
  New in this version is a nifty gizmo to (hopefully) capture rotation data.  Also, the 3-bytes that constitue the Pad value are also displayed.

  Firstly, either keep inpout32.dll in the same directory as this program or in one of the Windows/System folders.  It allows win XP users to actually *use* the LPT port.  Then, connect your cables and run the program.
  Type in the number of the option you want and press enter, or leave it blank and press enter to quit.  Once you select an option the game will pause while it pulls information.  Oh!  Try and make sure you're in a level when you do it, or who knows what might happen.


  Output should look a bit like this:
[Player #	player data address	Player position address
x position	current x position	x position after removing stage scale
y position	current y position	y position after removing stage scale
z position	current z position	z position after removing stage scale
lateral rotation	degrees	vertical rotation	degrees
X rot.	sine of lateral rot.	Y rot.	sine of vertical rot.	Z rot.	cosine of lateral rot.
room      	room pointer address	Corresponding P- value extracted from tile header
]

  The number of player positions output is based on how many are currently linked and loaded in-game.  If a player is not loaded, their data does not appear.  Nifty, eh?

  The unexpanded positions are the positions after removing the stage scale modification done on level load.  Unexpanded positions are the values you would use in the original setup file.  The only major feature that isn't incorporated is rotation, since the rotation data stored is different from the aspect used in setup files and doesn't necessarily correspond anyway.  You can do that more precisely by hand anyway.

--The only issue with the unexpanded presets is that the y position will most likely be false due to character height.  It will be a bit lower than you'd expect, but it should still work fine.  The unexpanded values are rounded to the nearest integer, making them compliant with all standard unexpanded setup code.  So, if you run the program right after spawning you'll get the original spawn location with a funny y value.  It saves a bit of time, either way.

The rotation may be somewhat inaccurate due to the conversion to radians using a terribly fudged PI value.
Also, the standard y value for the player viewport is -4 degrees.
____________________

  A bonus feature is that you can look at player statistics.  There isn't much point to it, but it was fun to add it.  I get carried away with things like this, you know.  Be thankful it doesn't display the time since you powered-up the system.  It's mostly geared towards multiplayer, but works in solo as well.
  The player statistics displayed are:
  Shot totals and approximate accuracy
  Kill Totals and the largest number of guys toasted at once
  Various counters such as max/min time between kills and innings, etc
  Body Armor pickups
  Distance (in clipping units) that you've run
  There might be a couple other things in there, but you get the idea.

  The game remains paused until all the players' data is read in.  Player 1's stuff will be displayed, then press any button to advance to player 2, etc.  It is very, very stupid to either yoink the cable out or close the program before advancing through all the players, since then you'll have to reboot your N64.
____________________

  Source is provided, if you want to have it do something weird like output a thousand different aspects of level data, player inventory, applied models, guard info and paths, etc.  Hey, you can also build your own uploader for this or other games.  Besides, if the stupid thing doesn't work for you you'll probably want to recompile it ;*)

  Based off the Generic comms functions courtesy of hcs
  http://sourceforge.net/projects/N64dev
  http://hcs.freeshell.org/files/neon64v12asource.rar


-Zoinkity
